package com.wigem.approve.service;

import java.util.List;

import com.wigem.framework.common.pojo.PageResult;
import com.wigem.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.wigem.approve.entity.DicRegionEntity;
import com.wigem.approve.mapper.DicRegionMapper;
import com.wigem.approve.vo.DicRegionVo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;

/**
 * 街乡字典Service业务层处理
 *
 * @author DH
 * @date 2024-05-27
 */
@Service
public class DicRegionServiceImpl implements DicRegionService {

    @Resource
    private DicRegionMapper dicRegionMapper;


    @Override
    public List<DicRegionEntity> getList(DicRegionVo dicRegionvo) {
        return dicRegionMapper.selectList(query(dicRegionvo));
    }

    @Override
    public PageResult<DicRegionEntity> getPageList(DicRegionVo dicRegionVo) {

        return dicRegionMapper.selectPage(dicRegionVo, query(dicRegionVo));
    }


    @Override
    public DicRegionEntity getEntity(String id) {
        return dicRegionMapper.selectById(id);
    }

    @Override
    public void add(DicRegionVo dicRegionVo) {
        DicRegionEntity dicRegionEntity = new DicRegionEntity();
        BeanUtils.copyProperties(dicRegionVo, dicRegionEntity);
        dicRegionEntity.create();
        dicRegionMapper.insert(dicRegionEntity);
    }


    @Override
    public void update(DicRegionVo dicRegionVo) {
        DicRegionEntity dicRegionEntity = new DicRegionEntity();
        BeanUtils.copyProperties(dicRegionVo, dicRegionEntity);
        dicRegionMapper.updateById(dicRegionEntity);
    }

    @Override
    public void save(DicRegionVo dicRegionVo) {

        DicRegionEntity dicRegionEntity = new DicRegionEntity();
        BeanUtils.copyProperties(dicRegionVo, dicRegionEntity);
        if (StringUtils.isEmpty(dicRegionVo.getId())) {
            dicRegionEntity.create();
            dicRegionMapper.insert(dicRegionEntity);
        } else {
            dicRegionMapper.updateById(dicRegionEntity);
        }

    }


    @Override
    public int delete(String id) {
        return dicRegionMapper.deleteById(id);
    }


    @Override
    public int remove(String id) {
        return dicRegionMapper.remove(id);
    }


    public LambdaQueryWrapperX<DicRegionEntity> query(DicRegionVo dicRegionVo) {

        LambdaQueryWrapperX<DicRegionEntity> dicRegionEntityLambdaQueryWrapperX = new LambdaQueryWrapperX<>();
        dicRegionEntityLambdaQueryWrapperX = dicRegionEntityLambdaQueryWrapperX
                .eqIfPresent(DicRegionEntity::getId, dicRegionVo.getId())
                .eqIfPresent(DicRegionEntity::getRegionId, dicRegionVo.getRegionId())
                .likeIfPresent(DicRegionEntity::getRegionName, dicRegionVo.getRegionName())

        ;
        return dicRegionEntityLambdaQueryWrapperX;
    }


}
